package org.zcz.svnpackageutil;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

public class CalendarTest {
    public static void main(String[] args) throws ParseException {
//        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
//        String dateStr = "2019-04-08";
//        Date target = format.parse(dateStr);
//        Calendar calendar = Calendar.getInstance();
//        calendar.setTime(target);
//        System.out.println(calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
//        calendar.add(Calendar.DATE,-1);
//        System.out.println(calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
        List l = new ArrayList();
        l.add(1);
        l.add(2);
        l.add(3);

        List l2 = l.subList(1,2);
        System.out.println(l2);
    }

    /**
     * 以当前月为基准获取目标月的第一天
     * @param month
     * @return
     */
    private static String getMonthFirstDay(int month){
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        //获取当前月第一天：
        Calendar c = Calendar.getInstance();
        c.add(Calendar.MONTH, month);
        c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
        String first = format.format(c.getTime());
        return first;
    }

    /**
     * 获取指定周一
     * @param date
     * @return
     */
    public static java.util.Date getNextWeekMonday(java.util.Date date,int week) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(getThisWeekMonday(date));
        cal.add(Calendar.DATE, 7*week);
        return cal.getTime();
    }
    /**
     * 获取这周一
     * @param date
     * @return
     */
    public static java.util.Date getThisWeekMonday(java.util.Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        // 获得当前日期是一个星期的第几天
        int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
        if (1 == dayWeek) {
            cal.add(Calendar.DAY_OF_MONTH, -1);
        }
        // 设置一个星期的第一天，按中国的习惯一个星期的第一天是星期一
        cal.setFirstDayOfWeek(Calendar.MONDAY);
        // 获得当前日期是一个星期的第几天
        int day = cal.get(Calendar.DAY_OF_WEEK);
        // 根据日历的规则，给当前日期减去星期几与一个星期第一天的差值
        cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
        return cal.getTime();
    }
}
